BibliotecaAuxiliarScript.execute('framework.src.gui.MenuItem');
BibliotecaAuxiliarScript.execute('framework.src.util.gui.Fonte');

Label = MenuItem.new();

Label.st_titulo = "";
Label.fonte = nil;
Label.is_titulo_alterado = false;
Label.is_fonte_alterada = false;
Label.is_largura_fixa = false;

function Label.__index(tabela,chave)
	return Label[chave];
end

function Label.new(o)
	local retorno = o or {};
	retorno = setmetatable(retorno,Label);
	
	if(retorno.fonte == nil)then
		retorno.fonte = Fonte.new({nome='Arial', tamanho=16});
		retorno.fonte.cor = Cor.new({r=0,g=0,b=255});
	end
	
	return retorno;
end

function Label:draw()
	
	if(self.is_titulo_alterado or self.is_fonte_alterada) then
		self:atualizar();
	end
	
	local fundo = BibliotecaAuxiliarDesenho.newImagem(self.nb_largura,self.nb_altura);
	BibliotecaAuxiliarDesenho.limparTela(fundo,self.cor_fundo);
	
	if(self.st_titulo ~= nil)then
		BibliotecaAuxiliarDesenho.desenharTexto(self.fonte,self.nb_px_texto,self.nb_py_texto,self.st_titulo,fundo);
	end
	return fundo;
end

function Label:handler()
end

function Label:setTitulo(st_texto)
	self.st_titulo = st_texto;
	self.is_titulo_alterado = true;
end

function Label:setFonte(newFonte)
	self.fonte = newFonte;
	self.is_fonte_alterada = true;
end

function Label:atualizar()
	self.nb_altura_texto = BibliotecaAuxiliarDesenho.getAlturaTexto(self.fonte,self.st_titulo);
	self.nb_largura_texto = BibliotecaAuxiliarDesenho.getLarguraTexto(self.fonte,self.st_titulo);
	
	self.nb_altura = self.nb_altura_texto + self.nb_margem_superior + self.nb_margem_inferior;
	
	if(not self.is_largura_fixa)then
		self.nb_largura = self.nb_largura_texto + self.nb_margem_esquerda + self.nb_margem_direita;
	end	
		
	self.nb_px_texto = self.nb_margem_esquerda;
	self.nb_py_texto = self.nb_altura_texto;
	
	self.is_titulo_alterado = false;
	self.is_fonte_alterada = false;
end
